package com.education.welco.service;

import com.education.welco.pojo.VirtualReality;
import com.education.welco.pojo.vo.VirtualRealityVO;

import java.util.List;

/**
 * 虚拟仿真 服务层
 *
 * @Author: liftsail
 * @Date: 2023-04-13
 * @Description: 不积跬步无以至千里
 */
public interface IVirtualRealityService {

    /**
     * 查询虚拟仿真信息
     *
     * @param id 虚拟仿真ID
     * @return 虚拟仿真信息
     */
    public VirtualReality selectVirtualRealityById(Integer id);

    /**
     * 查询虚拟仿真列表
     *
     * @param virtualReality 虚拟仿真信息
     * @return 虚拟仿真集合
     */
    public List<VirtualReality> selectVirtualRealityList(VirtualReality virtualReality);

    /**
     * 新增虚拟仿真
     *
     * @param virtualReality 虚拟仿真信息
     * @return 结果
     */
    public int insertVirtualReality(VirtualReality virtualReality);

    /**
     * 修改虚拟仿真
     *
     * @param virtualReality 虚拟仿真信息
     * @return 结果
     */
    public int updateVirtualReality(VirtualReality virtualReality);

    /**
     * 删除虚拟仿真信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteVirtualRealityByIds(String ids);

    /**
     * 查询虚拟仿真资源被分享到几个学校
     *
     * @param id
     * @return
     */
    Integer selectVirtualRealitySchool(Integer id);

    /**
     * 学校分配资源列表查询附带回显
     *
     * @param schoolId
     * @return
     */
    List<VirtualReality> schoolVirtualRealityList(Integer schoolId);

    /**
     * 批量编辑学校虚拟仿真资源
     *
     * @param vrIds    虚拟仿真资源id集合
     * @param schoolId 学校id
     * @return
     */
    Integer updateSchoolShareVR(String vrIds, Integer schoolId);

    /**
     * 学校老师查询学校目前有权限的虚拟仿真资源
     *
     * @param schoolId
     * @return
     */
    List<VirtualReality> selectSchoolShareVRList(Integer schoolId);

    /**
     * 教师端查看为课程分配的全部虚拟资源(资源状态有效|无效)
     *
     * @param schoolId
     * @param catalogId 课程二级目录id
     * @return
     */
    List<VirtualRealityVO> selectCatalogShareVRList(Integer schoolId, Integer catalogId);

    /**
     * 批量编辑课程虚拟仿真资源
     *
     * @param vrIds     虚拟仿真资源id集合
     * @param teaUserId 教师用户id
     * @param catalogId 课程二级目录id
     * @return
     */
    Integer updateCatalogShareVR(String vrIds, Integer teaUserId, Integer catalogId);

    /**
     * 根据课程二级目录id得到该课程所在的学校id
     *
     * @param lessonId
     * @return
     */
    Integer selectSchoolIdBycatalogId(Integer lessonId);
}